package com.mapper;

import com.bean.Announcement;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface AnnouncementMapper {
    /**
     * 根据公告 ID 获取公告信息
     * @param announcementId 公告的唯一标识
     * @return 公告信息对象，如果未找到则返回 null
     */
    Announcement getAnnouncementById(Integer announcementId);

    /**
     * 分页模糊查询公告信息，可根据公告标题、内容或发布者用户名进行模糊匹配
     * @param keyword 模糊查询关键字，可匹配公告标题、内容或发布者用户名
     * @param offset 分页偏移量
     * @param limit 每页记录数
     * @return 符合条件的公告信息列表
     */
    List<Announcement> getAnnouncementsWithKeyword(String keyword, int offset, int limit);

    /**
     * 统计符合模糊查询条件的公告信息数量
     * @param keyword 模糊查询关键字，可匹配公告标题、内容或发布者用户名
     * @return 符合条件的公告信息数量
     */
    int countAnnouncementsWithKeyword(String keyword);

    /**
     * 插入新的公告信息
     * @param announcement 公告信息对象
     * @return 插入操作影响的行数，成功插入返回 1，失败返回 0
     */
    int insertAnnouncement(Announcement announcement);

    /**
     * 根据公告 ID 更新公告信息
     * @param announcement 公告信息对象，包含要更新的内容，announcementId 用于定位记录
     * @return 更新操作影响的行数，成功更新返回 1，失败返回 0
     */
    int updateAnnouncement(Announcement announcement);

    /**
     * 根据公告 ID 删除公告信息
     * @param announcementId 公告的唯一标识
     * @return 删除操作影响的行数，成功删除返回 1，失败返回 0
     */
    int deleteAnnouncementById(Integer announcementId);
}